Ongoing advances in distributed multi-processor computer systems have continued to drive improvements in the various technologies used to interconnect processors, as well as their peripheral components. As the speed of processors has increased, the underlying interconnect, intervening logic, and the overhead associated with transferring data to and from the processors have all become increasingly significant factors impacting performance. Performance improvements have been achieved through the use of faster networking technologies (e.g., Gigabit Ethernet), network switch fabrics (e.g., Infiniband, and RapidIO), TCP offload engines, and zero-copy data transfer techniques (e.g., remote direct memory access).
Efforts have also been increasingly focused on improving the performance, efficient use and allocation of peripheral input/output (I/O) devices (e.g., network interfaces and disk drives) within computer systems. Such improvements have been achieved in part through the use of shared network-attached I/O devices and shared I/O devices directly coupled to switch fabrics. However, both network-attached I/O devices and shared I/O devices directly coupled to switch fabrics may add communication protocol layers that can adversely affect performance, and often require the use of proprietary hardware and software. Further, many I/O devices can only be utilized by, or associated with, one processor at a time. This may necessitate the use of a number of shared I/O devices that are dynamically allocated to a processor, thus adding additional overhead associated with the allocation and deallocation of the I/O device. This overhead can also adversely affect the overall performance of a system.